package com.greenline.push.dal.pushcenter;

import java.util.List;

import com.greenline.push.dal.pushcenter.dataobject.MsgForSendDO;
import com.greenline.push.dal.query.MsgForSendQuery;

public interface MsgForSendDao {
	/**
	 * 新增
	 * 
	 * @param msgForSendDO
	 * @return 新增数据的ID
	 */
	Long insert(MsgForSendDO msgForSendDO);

	/**
	 * 根据ID获取
	 * 
	 * @param id
	 * @return MsgForSendDO
	 */
	MsgForSendDO getById(Long id);

	/**
	 * 跟新
	 * 
	 * @param msgForSendDO
	 * @return -1 表示更新失败；>0 表示更新成功
	 */
	int update(MsgForSendDO msgForSendDO);

	/**
	 * 分页查询
	 * 
	 * @param query
	 * @return
	 */
	MsgForSendQuery listByQuery(MsgForSendQuery query);

	/**
	 * 删除
	 * 
	 * @param id
	 * @return -1 表示删除失败；>0 表示删除成功
	 */
	int deleteById(Long id);

	/**
	 * get lasted record
	 * 
	 * @return MsgForSendDO
	 */
	MsgForSendDO getLastedRecord();

	List<MsgForSendDO> getRealTimeMsgForSendList(Long maxMsgId, Integer count);

	List<MsgForSendDO> getPeriodicMsgForSendList(Long maxMsgId, Integer count);
	
	boolean resetStatus(Long lastId);

    List<MsgForSendDO> fetchByTypeAndRecord(Integer type, Long record, Integer total);
}
